var mongoose=require('mongoose');
var Schema=mongoose.Schema;
var config=require('../config');
var db=mongoose.createConnection(config.db_url);
db.on('error',function(error){
    console.log(error);
});

var userSchema=new Schema({
    username:String,
    password:String,
    email:String,
    nickname:String,
    gender:Number,
    age:Number,
    country:String,
    nowcity:String,
    language:String,
    studylanguage:String,
    describe:String,
    creatDate:{type:Date,default:Date.now},
    state:{type:Number,default:0},
    overtime:Number,
    headSrc:String
});
//users---对应数据库表名
var User=db.model('User',userSchema);
User.prototype.findUserByName=function (username,callback){
    User.findOne({username:username}, function(err, doc){
        if(doc){
            return callback(err, doc);
        }
        return callback(err);
    });
}
User.prototype.findUserById=function (id,callback){
    User.findOne({_id:id}, function(err, data){
            callback(err,data);
    });
}
User.prototype.findAllUser=function(callback){
    User.find({},function(err,datas){
        return callback(err,datas);
    })
}
User.prototype.findUserByOpt=function(options,callback){
    User.find(options,function(err,datas){
        return callback(err,datas);
    })
}
User.prototype.updateStateById=function(id,state,callback){
    User.update({_id:id},{state:state},function(err){
        return callback(err);
    })
}
User.prototype.updateUserById=function(id,options,callback){
    User.update({_id:id},options,function(err){
        return callback(err);
    })
}
User.prototype.updateUserByName=function(username,options,callback){
    User.update({username:username},options,function(err){
        return callback(err);
    })
}
/**
 * 分页查询
 * @param obj
 * @param callback
 */
User.prototype.findForPage=function(obj,callback){
    var q=obj.search||{};                                       //查询条件
    var col=obj.columns||{};                                    //返回字段
    var query=User.find(q,col).skip(obj.page.skipFrom).limit(obj.page.limit);
    query.exec(function(err, datas) {
        if (err) {
            callback(err, null, null);
        } else {
            User.count(q, function(err, count) {
                if (err) {
                    callback(err, null, null);
                } else {
                    var pageCount = Math.ceil(count / obj.page.limit);
                    callback(null,count,pageCount, datas);
                }
            });
        }
    });
}
module.exports = User;
module.exports.userSchema=userSchema;

